AWS DataSync で共有フォルダの設定を転送できるか検証してみた
DataSyncを使えば共有フォルダの設定も移行できるか気になる
こんにちは、のんピ(@non____97)です。
皆さんはDataSyncで共有フォルダの設定も移行できるか気になるたことはありますか? 私はあります。
DataSyncがSMBを使って転送する場合、扱えるメタデータは以下の通りです。
セルフマネージドサーバーメッセージブロック (SMB)、または FSx for Windows File Server 間、または FSx for Windows File Server 間、または FSx for Windows File Server 間、または FSx for Windows File Server 間、または FSx for Windows File Server (SMB) 間でコピーする場合— この場合は、 DataSync 次のメタデータをコピーできます。
- ファイルのタイムスタンプ: アクセス時間、変更時間、作成時間
- ファイル所有者のセキュリティ識別子 (SID)
- 標準ファイル属性:
- 読み取り専用 (R)
- アーカイブ (A)
- システム (S)
- 非表示 (H)
- 圧縮 (C)
- コンテンツのインデックスなし (N)
- 暗号化 (E)
- 一時 (T)
- オフライン (O)
- スパース (P)
- オブジェクトへのアクセスを許可するかどうかを決定する NTFS 任意アクセスリスト (DACL)
- 管理者がセキュリティで保護されたオブジェクトへのアクセスの試みをログに記録するために使用する NTFS システムアクセスコントロールリスト (SACL)
共有フォルダのアクセス権は含まれていないですね。
書かれていないだけで、実は含まれるなんてこともあると思います。
気になったので検証してみます。
いきなりまとめ
- DataSyncは共有フォルダの設定を転送しない
- 共有フォルダの設定はDataSync以外の方法で設定してあげる必要がある
- 共有フォルダ内のファイルやフォルダは転送される
- DataSyncのFSx for ONTAPのロケーションにSMBで接続する場合は、パスにCIFSファイル共有(共有フォルダ)の名前を指定する
- CreateLocationFsxOntap APIのドキュメントにはSVMのジャンクションパスを指定するように記載があるので注意
検証環境
検証環境は以下の通りです。
FSx for ONTAPファイルシステムにSVM1
とSVM2
とSVMを作成します。
各SVMのボリュームのジャンクションパスは以下の通りです。
SVM1のroot ├── vol1 │ └── vol3 └── vol2 SVM2のroot ├── vol1 └── vol2
SVM1
には以下のようにジャンクションパスを指定してCIFSファイル共有を作成します。
share1
:/vol1
share2
:/vol2
share3
:/vol1/vol3
share4
:/vol2/folder
SVM2
にはCIFSファイル共有を作成しません。
DataSyncでSVM1
の/
からSVM2
の/
に転送して、SVM1
上のCIFSファイル共有の設定が転送されるか確認します。
AD DCについては以下記事の検証で使用したものを流用します。
検証用のSVMとボリュームの用意
それでは、まず検証用のSVMとボリュームの用意をします。
参考までにFSx for ONTAPファイルシステムの設定は以下の通りです。
$ aws fsx describe-file-systems { "FileSystems": [ { "OwnerId": "<AWSアカウントID>", "CreationTime": "2022-11-12T02:23:39.467000+00:00", "FileSystemId": "fs-083d045e152f6c0a7", "FileSystemType": "ONTAP", "Lifecycle": "AVAILABLE", "StorageCapacity": 1024, "StorageType": "SSD", "VpcId": "vpc-08b84da1f793ed513", "SubnetIds": [ "subnet-08dc789896a48a3b4" ], "NetworkInterfaceIds": [ "eni-032eb46f2ae94002f", "eni-06c258dd5aaaca549" ], "KmsKeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/365ae19c-8016-4963-9afd-05f703509254", "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-083d045e152f6c0a7", "Tags": [ { "Key": "aws:cloudformation:stack-name", "Value": "FsxnStack" }, { "Key": "aws:cloudformation:logical-id", "Value": "FSxforONTAPfilesystem" }, { "Key": "aws:cloudformation:stack-id", "Value": "arn:aws:cloudformation:us-east-1:<AWSアカウントID>:stack/FsxnStack/78cdb890-5423-11ed-81fb-0eac30df53d1" }, { "Key": "Name", "Value": "fsx-for-ontap-file-system" } ], "OntapConfiguration": { "AutomaticBackupRetentionDays": 7, "DailyAutomaticBackupStartTime": "16:00", "DeploymentType": "SINGLE_AZ_1", "Endpoints": { "Intercluster": { "DNSName": "intercluster.fs-083d045e152f6c0a7.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.75", "10.0.1.80" ] }, "Management": { "DNSName": "management.fs-083d045e152f6c0a7.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.110" ] } }, "DiskIopsConfiguration": { "Mode": "AUTOMATIC", "Iops": 3072 }, "PreferredSubnetId": "subnet-08dc789896a48a3b4", "ThroughputCapacity": 128, "WeeklyMaintenanceStartTime": "6:17:00" } } ] }
まず、DataSyncのソースロケーションとして使用するSVMであるSVM1
を作成します。
# SVM1のパラメーターを指定 $ filesystem_id=fs-083d045e152f6c0a7 $ svm_name=svm1 $ net_bios_name=SVM1 $ domain_name=corp.non-97.net $ organizational_unit_distinguished_name='OU=FSxForONTAP,DC=corp,DC=non-97,DC=net' $ filesystem_administrators_group=FSxAdminGroup $ service_account_user_name=FSxServiceAccount $ service_account_password='<サービスアカウントのパスワード>' $ dns_ip=10.0.1.10 $ create_storage_virtual_machine_input=$(cat <<EOM { "ActiveDirectoryConfiguration": { "NetBiosName": "$net_bios_name", "SelfManagedActiveDirectoryConfiguration": { "DomainName": "$domain_name", "OrganizationalUnitDistinguishedName": "$organizational_unit_distinguished_name", "FileSystemAdministratorsGroup": "$filesystem_administrators_group", "UserName": "$service_account_user_name", "Password": "$service_account_password", "DnsIps": [ "$dns_ip" ] } }, "FileSystemId": "$filesystem_id", "Name": "$svm_name", "Tags": [ { "Key": "Name", "Value": "$svm_name" } ], "RootVolumeSecurityStyle": "NTFS" } EOM ) # SVM1の作成 $ create_storage_virtual_machine_output=$(aws fsx create-storage-virtual-machine \ --cli-input-json "$create_storage_virtual_machine_input" ) # SVM1のIDを取得 $ svm_id=$(echo $create_storage_virtual_machine_output \ | jq -r ".StorageVirtualMachine.StorageVirtualMachineId" ) # SVM1が作成されたことを確認 $ aws fsx describe-storage-virtual-machines \ --storage-virtual-machine-ids "$svm_id" { "StorageVirtualMachines": [ { "ActiveDirectoryConfiguration": { "NetBiosName": "SVM1", "SelfManagedActiveDirectoryConfiguration": { "DomainName": "corp.non-97.net", "OrganizationalUnitDistinguishedName": "OU=FSxForONTAP,DC=corp,DC=non-97,DC=net", "UserName": "FSxServiceAccount", "DnsIps": [ "10.0.1.10" ] } }, "CreationTime": "2022-11-12T02:39:27.139000+00:00", "Endpoints": { "Iscsi": { "DNSName": "iscsi.svm-0130caf90485a0034.fs-083d045e152f6c0a7.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.113", "10.0.1.84" ] }, "Management": { "DNSName": "svm-0130caf90485a0034.fs-083d045e152f6c0a7.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.123" ] }, "Nfs": { "DNSName": "svm-0130caf90485a0034.fs-083d045e152f6c0a7.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.123" ] }, "Smb": { "DNSName": "SVM1.corp.non-97.net", "IpAddresses": [ "10.0.1.123" ] } }, "FileSystemId": "fs-083d045e152f6c0a7", "Lifecycle": "CREATED", "Name": "svm1", "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-0130caf90485a0034", "StorageVirtualMachineId": "svm-0130caf90485a0034", "Subtype": "DEFAULT", "UUID": "417cd919-6233-11ed-85d2-b5000c4a2835" } ] }
SVM1
が作成されたら、ボリュームを用意します。各ボリュームの名前とジャンクションパス以外のパラメーターは全て同じです。
まず、ジャンクションパスが/vol1
のボリュームを作成します。
# ボリュームのパラメーター $ volume_name=svm1_vol1 $ junction_path='/vol1' $ volume_size=1024 $ create_volume_input=$(cat <<EOM { "VolumeType": "ONTAP", "Name": "$volume_name", "OntapConfiguration": { "JunctionPath": "$junction_path", "SecurityStyle": "NTFS", "SizeInMegabytes": $volume_size, "StorageEfficiencyEnabled": true, "StorageVirtualMachineId": "$svm_id", "TieringPolicy": { "CoolingPeriod": 31, "Name": "AUTO" } }, "Tags": [ { "Key": "Name", "Value": "$volume_name" } ] } EOM ) # ボリュームの作成 $ create_volume_output=$(aws fsx create-volume \ --cli-input-json "$create_volume_input" ) # 作成されるボリュームの状態を確認 $ echo $create_volume_output \ | jq -r { "Volume": { "CreationTime": "2022-11-12T02:49:21.093000+00:00", "FileSystemId": "fs-083d045e152f6c0a7", "Lifecycle": "CREATING", "Name": "svm1_vol1", "OntapConfiguration": { "FlexCacheEndpointType": "NONE", "JunctionPath": "/vol1", "SecurityStyle": "NTFS", "SizeInMegabytes": 1024, "StorageEfficiencyEnabled": true, "StorageVirtualMachineId": "svm-0130caf90485a0034", "StorageVirtualMachineRoot": false, "TieringPolicy": { "CoolingPeriod": 31, "Name": "AUTO" }, "OntapVolumeType": "RW" }, "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:volume/fs-083d045e152f6c0a7/fsvol-01b146c9eb4a737fa", "Tags": [ { "Key": "Name", "Value": "svm1_vol1" } ], "VolumeId": "fsvol-01b146c9eb4a737fa", "VolumeType": "ONTAP" } }
他のボリュームも同じように作成します。最終的にSVM1のボリュームは以下のようになります。
$ aws fsx describe-volumes \ --filters Name=storage-virtual-machine-id,Values="$svm_id" { "Volumes": [ { "CreationTime": "2022-11-12T02:39:45+00:00", "FileSystemId": "fs-083d045e152f6c0a7", "Lifecycle": "CREATED", "Name": "svm1_root", "OntapConfiguration": { "FlexCacheEndpointType": "NONE", "JunctionPath": "/", "SecurityStyle": "NTFS", "SizeInMegabytes": 1024, "StorageEfficiencyEnabled": false, "StorageVirtualMachineId": "svm-0130caf90485a0034", "StorageVirtualMachineRoot": true, "TieringPolicy": { "Name": "NONE" }, "UUID": "448cb6ae-6233-11ed-a090-0bcdbd711eea", "OntapVolumeType": "RW" }, "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:volume/fs-083d045e152f6c0a7/fsvol-0a0ba9a3a787a77d5", "VolumeId": "fsvol-0a0ba9a3a787a77d5", "VolumeType": "ONTAP" }, { "CreationTime": "2022-11-12T02:49:21.093000+00:00", "FileSystemId": "fs-083d045e152f6c0a7", "Lifecycle": "CREATED", "Name": "svm1_vol1", "OntapConfiguration": { "FlexCacheEndpointType": "NONE", "JunctionPath": "/vol1", "SecurityStyle": "NTFS", "SizeInMegabytes": 1024, "StorageEfficiencyEnabled": true, "StorageVirtualMachineId": "svm-0130caf90485a0034", "StorageVirtualMachineRoot": false, "TieringPolicy": { "CoolingPeriod": 31, "Name": "AUTO" }, "UUID": "a32cdd75-6234-11ed-85d2-b5000c4a2835", "OntapVolumeType": "RW" }, "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:volume/fs-083d045e152f6c0a7/fsvol-01b146c9eb4a737fa", "VolumeId": "fsvol-01b146c9eb4a737fa", "VolumeType": "ONTAP" }, { "CreationTime": "2022-11-12T02:50:16.741000+00:00", "FileSystemId": "fs-083d045e152f6c0a7", "Lifecycle": "CREATED", "Name": "svm1_vol2", "OntapConfiguration": { "FlexCacheEndpointType": "NONE", "JunctionPath": "/vol2", "SecurityStyle": "NTFS", "SizeInMegabytes": 1024, "StorageEfficiencyEnabled": true, "StorageVirtualMachineId": "svm-0130caf90485a0034", "StorageVirtualMachineRoot": false, "TieringPolicy": { "CoolingPeriod": 31, "Name": "AUTO" }, "UUID": "c7c8a6a1-6234-11ed-85d2-b5000c4a2835", "OntapVolumeType": "RW" }, "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:volume/fs-083d045e152f6c0a7/fsvol-04a831d8eaf9eb347", "VolumeId": "fsvol-04a831d8eaf9eb347", "VolumeType": "ONTAP" }, { "CreationTime": "2022-11-12T02:50:17.658000+00:00", "FileSystemId": "fs-083d045e152f6c0a7", "Lifecycle": "CREATED", "Name": "svm1_vol3", "OntapConfiguration": { "FlexCacheEndpointType": "NONE", "JunctionPath": "/vol1/vol3", "SecurityStyle": "NTFS", "SizeInMegabytes": 1024, "StorageEfficiencyEnabled": true, "StorageVirtualMachineId": "svm-0130caf90485a0034", "StorageVirtualMachineRoot": false, "TieringPolicy": { "CoolingPeriod": 31, "Name": "AUTO" }, "UUID": "c7fc7bad-6234-11ed-85d2-b5000c4a2835", "OntapVolumeType": "RW" }, "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:volume/fs-083d045e152f6c0a7/fsvol-05ab13ba398ad90aa", "VolumeId": "fsvol-05ab13ba398ad90aa", "VolumeType": "ONTAP" } ] }
同じ要領で、SVM2
とSVM2
のボリュームを作成します。
作成されたSVMとボリュームは以下の通りです。
# SVM2の確認 $ aws fsx describe-storage-virtual-machines \ --storage-virtual-machine-ids "$svm_id" { "StorageVirtualMachines": [ { "ActiveDirectoryConfiguration": { "NetBiosName": "SVM2", "SelfManagedActiveDirectoryConfiguration": { "DomainName": "corp.non-97.net", "OrganizationalUnitDistinguishedName": "OU=FSxForONTAP,DC=corp,DC=non-97,DC=net", "UserName": "FSxServiceAccount", "DnsIps": [ "10.0.1.10" ] } }, "CreationTime": "2022-11-12T02:52:10.004000+00:00", "Endpoints": { "Iscsi": { "DNSName": "iscsi.svm-074f542c2e27ebc8f.fs-083d045e152f6c0a7.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.119", "10.0.1.72" ] }, "Management": { "DNSName": "svm-074f542c2e27ebc8f.fs-083d045e152f6c0a7.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.116" ] }, "Nfs": { "DNSName": "svm-074f542c2e27ebc8f.fs-083d045e152f6c0a7.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.116" ] }, "Smb": { "DNSName": "SVM2.corp.non-97.net", "IpAddresses": [ "10.0.1.116" ] } }, "FileSystemId": "fs-083d045e152f6c0a7", "Lifecycle": "CREATED", "Name": "svm2", "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-074f542c2e27ebc8f", "StorageVirtualMachineId": "svm-074f542c2e27ebc8f", "Subtype": "DEFAULT", "UUID": "05fe4aa3-6235-11ed-85d2-b5000c4a2835" } ] } # SVM2のボリュームの確認 $ aws fsx describe-volumes \ --filters Name=storage-virtual-machine-id,Values="$svm_id" { "Volumes": [ { "CreationTime": "2022-11-12T02:52:29+00:00", "FileSystemId": "fs-083d045e152f6c0a7", "Lifecycle": "CREATED", "Name": "svm2_root", "OntapConfiguration": { "FlexCacheEndpointType": "NONE", "JunctionPath": "/", "SecurityStyle": "NTFS", "SizeInMegabytes": 1024, "StorageEfficiencyEnabled": false, "StorageVirtualMachineId": "svm-074f542c2e27ebc8f", "StorageVirtualMachineRoot": true, "TieringPolicy": { "Name": "NONE" }, "UUID": "0becb9a3-6235-11ed-85d2-b5000c4a2835", "OntapVolumeType": "RW" }, "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:volume/fs-083d045e152f6c0a7/fsvol-0be974bc08ef01a3f", "VolumeId": "fsvol-0be974bc08ef01a3f", "VolumeType": "ONTAP" }, { "CreationTime": "2022-11-12T03:00:54.525000+00:00", "FileSystemId": "fs-083d045e152f6c0a7", "Lifecycle": "CREATED", "Name": "svm2_vol1", "OntapConfiguration": { "FlexCacheEndpointType": "NONE", "JunctionPath": "/vol1", "SecurityStyle": "NTFS", "SizeInMegabytes": 1024, "StorageEfficiencyEnabled": true, "StorageVirtualMachineId": "svm-074f542c2e27ebc8f", "StorageVirtualMachineRoot": false, "TieringPolicy": { "CoolingPeriod": 31, "Name": "AUTO" }, "UUID": "43190dee-6236-11ed-85d2-b5000c4a2835", "OntapVolumeType": "RW" }, "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:volume/fs-083d045e152f6c0a7/fsvol-077128438e347eff8", "VolumeId": "fsvol-077128438e347eff8", "VolumeType": "ONTAP" }, { "CreationTime": "2022-11-12T03:00:55.491000+00:00", "FileSystemId": "fs-083d045e152f6c0a7", "Lifecycle": "CREATED", "Name": "svm2_vol2", "OntapConfiguration": { "FlexCacheEndpointType": "NONE", "JunctionPath": "/vol2", "SecurityStyle": "NTFS", "SizeInMegabytes": 1024, "StorageEfficiencyEnabled": true, "StorageVirtualMachineId": "svm-074f542c2e27ebc8f", "StorageVirtualMachineRoot": false, "TieringPolicy": { "CoolingPeriod": 31, "Name": "AUTO" }, "UUID": "432cee0c-6236-11ed-85d2-b5000c4a2835", "OntapVolumeType": "RW" }, "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:volume/fs-083d045e152f6c0a7/fsvol-0c71e47681dd3f74a", "VolumeId": "fsvol-0c71e47681dd3f74a", "VolumeType": "ONTAP" } ] }
CIFSファイル共有(共有フォルダ)の作成
次に、CIFSファイル共有(共有フォルダ)を作成します。
パスがボリュームのCIFSファイル共有はONTAP CLIで作成します。
FSx for ONTAPファイルシステムにSSHします。
> ssh fsxadmin@management.fs-083d045e152f6c0a7.fsx.us-east-1.amazonaws.com Password: This is your first recorded login. FsxId083d045e152f6c0a7::>
CIFSサーバーが稼働しており、各SVMにCIFSファイル共有がc$
とipc$
しかないことを確認します。
# CIFSサーバーが稼働していることを確認 FsxId083d045e152f6c0a7::> cifs show Server Status Domain/Workgroup Authentication Vserver Name Admin Name Style ----------- --------------- --------- ---------------- -------------- svm1 SVM1 up CORP domain svm2 SVM2 up CORP domain 2 entries were displayed. # 各SVMにCIFSファイル共有が c$ と ipc$ しかないことを確認 FsxId083d045e152f6c0a7::> cifs share show Vserver Share Path Properties Comment ACL -------------- ------------- ----------------- ---------- -------- ----------- svm1 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm1 ipc$ / browsable - - svm2 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm2 ipc$ / browsable - - 4 entries were displayed.
ONTAPにおけるc$
の仕様は以下NetApp公式ドキュメントをご覧ください。
それでは、SVM1
にCIFSファイル共有を作成します。
# ボリュームのジャンクションパスの確認 FsxId083d045e152f6c0a7::> volume show -fields junction-path vserver volume junction-path ------- --------- ------------- svm1 svm1_root / svm1 svm1_vol1 /vol1 svm1 svm1_vol2 /vol2 svm1 svm1_vol3 /vol1/vol3 svm2 svm2_root / svm2 svm2_vol1 /vol1 svm2 svm2_vol2 /vol2 7 entries were displayed. # CIFSファイル共有 share1 の作成 FsxId083d045e152f6c0a7::> cifs share create -vserver svm1 -share-name share1 -path /vol1 # CIFSファイル共有 share2 の作成 FsxId083d045e152f6c0a7::> cifs share create -vserver svm1 -share-name share2 -path /vol2 # CIFSファイル共有 share3 の作成 FsxId083d045e152f6c0a7::> cifs share create -vserver svm1 -share-name share3 -path /vol1/vol3 # CIFSファイル共有が作成されたことを確認 FsxId083d045e152f6c0a7::> cifs share show Vserver Share Path Properties Comment ACL -------------- ------------- ----------------- ---------- -------- ----------- svm1 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm1 ipc$ / browsable - - svm1 share1 /vol1 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 share2 /vol2 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 share3 /vol1/vol3 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm2 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm2 ipc$ / browsable - - 7 entries were displayed.
次にMMCを使って/vol2
配下にfolder
というフォルダを作成して、共有フォルダとして設定します。
AD DC上でfsmgmt.msc
を実行し、SVM1に接続します。
MMCからもONTAP CLIから作成したCIFSファイル共有があることを確認します。
共有フォルダ作成のウィザードに従って、共有フォルダを作成します。
まず、vol2
配下にfolder
というフォルダを作成します。
作成したフォルダをパスに指定して、Next
をクリックします。
share name
にshare4
と入力して、Next
をクリックします。
DataSyncで共有フォルダの設定が転送される場合、権限も正しく転送されるか確認したいので、FSxAdminGroup
にフルコントロールを付与します。
最後にFinish
をクリックします。
share4
が追加されたことを確認します。
ONTAP CLIからもshare4
がSVM1
上に追加されたことを確認します。
FsxId083d045e152f6c0a7::> cifs share show Vserver Share Path Properties Comment ACL -------------- ------------- ----------------- ---------- -------- ----------- svm1 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm1 ipc$ / browsable - - svm1 share1 /vol1 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 share2 /vol2 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 share3 /vol1/vol3 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 share4 /vol2/folder oplocks CORP\FSxAdminGroup / Full Control browsable Everyone / Read changenotify show-previous-versions svm2 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm2 ipc$ / browsable - -
DataSyncタスク実行
DataSyncのロケーションの作成
次にDataSyncのロケーションを作成します。
まず、SVM1
のルートボリュームのロケーションです。
# SVM1のルートボリュームのロケーションのパラメーター $ domain=corp.non-97.net $ password='<サービスアカウントのパスワード>' $ user=FSxAdmin $ sg_arn=arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365 $ svm_arn=arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-0130caf90485a0034 $ name=svm1 $ create_location_fsx_ontap_input=$(cat <<EOM { "Protocol": { "SMB": { "Domain": "$domain", "MountOptions": { "Version": "AUTOMATIC" }, "Password": "$password", "User": "$user" } }, "SecurityGroupArns": [ "$sg_arn" ], "StorageVirtualMachineArn": "$svm_arn", "Subdirectory": "/", "Tags": [ { "Key": "Name", "Value": "$name" } ] } EOM ) # ロケーションの作成 $ create_location_fsx_ontap_output=$(aws datasync create-location-fsx-ontap \ --cli-input-json "$create_location_fsx_ontap_input" ) # 作成されたロケーションの確認 $ aws datasync describe-location-fsx-ontap \ --location-arn $(echo $create_location_fsx_ontap_output \ | jq -r ".LocationArn") { "CreationTime": "2022-11-12T03:31:03.517000+00:00", "LocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-097e6e9d137283ce5", "LocationUri": "fsxn-smb://SVM1.CORP.NON-97.NET/", "Protocol": { "SMB": { "Domain": "corp.non-97.net", "MountOptions": { "Version": "AUTOMATIC" }, "User": "FSxAdmin" } }, "SecurityGroupArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365" ], "StorageVirtualMachineArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-0130caf90485a0034", "FsxFilesystemArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-083d045e152f6c0a7" }
同じ要領で、SVM2
のルートボリュームのロケーションを作成します。
# SVM2のルートボリュームのロケーションのパラメーター $ svm_arn=arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-074f542c2e27ebc8f $ name=svm2 $ create_location_fsx_ontap_input=$(cat <<EOM { "Protocol": { "SMB": { "Domain": "$domain", "MountOptions": { "Version": "AUTOMATIC" }, "Password": "$password", "User": "$user" } }, "SecurityGroupArns": [ "$sg_arn" ], "StorageVirtualMachineArn": "$svm_arn", "Subdirectory": "/", "Tags": [ { "Key": "Name", "Value": "$name" } ] } EOM ) # ロケーションの作成 $ create_location_fsx_ontap_output=$(aws datasync create-location-fsx-ontap \ --cli-input-json "$create_location_fsx_ontap_input" ) # 作成されたロケーションの確認 $ aws datasync describe-location-fsx-ontap \ --location-arn $(echo $create_location_fsx_ontap_output \ | jq -r ".LocationArn") { "CreationTime": "2022-11-12T03:40:28.706000+00:00", "LocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-06e1321bac35aa347", "LocationUri": "fsxn-smb://SVM2.CORP.NON-97.NET/", "Protocol": { "SMB": { "Domain": "corp.non-97.net", "MountOptions": { "Version": "AUTOMATIC" }, "User": "FSxAdmin" } }, "SecurityGroupArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365" ], "StorageVirtualMachineArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-074f542c2e27ebc8f", "FsxFilesystemArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-083d045e152f6c0a7" }
DataSyncのタスク作成と実行
DataSyncロケーションの用意ができたので、DataSyncタスクを作成して実行します。
SVM1のルートボリュームからSVM2のルートボリュームに転送するようなDataSyncタスクを作成します。
# DataSyncタスクのパラメーター $ src_location_arn=arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-097e6e9d137283ce5 # SVM1のルートボリュームのロケーション $ dest_location_arn=arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-06e1321bac35aa347. # SVM2のルートボリュームのロケーション $ clouwatch_logs_arn='arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/datasync:*' $ name='svm1-to-svm2' $ create_task_input=$(cat <<EOM { "SourceLocationArn": "$src_location_arn", "DestinationLocationArn": "$dest_location_arn", "CloudWatchLogGroupArn": "$clouwatch_logs_arn", "Name": "$name", "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" } } EOM ) # DataSyncタスクの作成 $ create_task_output=$(aws datasync create-task \ --cli-input-json "$create_task_input" ) # 作成されたDataSyncタスクの確認 $ aws datasync describe-task \ --task-arn $(echo $create_task_output \ | jq -r ".TaskArn") { "TaskArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-03dd23c56898e3363", "Status": "AVAILABLE", "Name": "svm1-to-svm2", "SourceLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-097e6e9d137283ce5", "DestinationLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-06e1321bac35aa347", "CloudWatchLogGroupArn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/datasync:*", "SourceNetworkInterfaceArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-02bfdb920cf43128e", "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-03da754820e19c1b5" ], "DestinationNetworkInterfaceArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-08c999f14a73a1998", "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-0eda40bb7c9eca8f1" ], "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" }, "Excludes": [], "CreationTime": "2022-11-12T03:44:11.846000+00:00", "Includes": [] }
DataSyncタスクが作成されました。
こちらのタスクを実行します。
# DataSyncタスクの実行 $ start_task_execution_output=$(aws datasync start-task-execution \ --task-arn $(echo $create_task_output \ | jq -r ".TaskArn") ) # タスクの実行結果の確認 $ aws datasync describe-task-execution \ --task-execution-arn $(echo $start_task_execution_output \ | jq -r ".TaskExecutionArn") { "TaskExecutionArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-03dd23c56898e3363/execution/exec-08784814e2e567a69", "Status": "ERROR", "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" }, "Excludes": [], "Includes": [], "StartTime": "2022-11-12T03:46:16.605000+00:00", "EstimatedFilesToTransfer": 0, "EstimatedBytesToTransfer": 0, "FilesTransferred": 0, "BytesWritten": 0, "BytesTransferred": 0, "Result": { "PrepareDuration": 0, "PrepareStatus": "PENDING", "TotalDuration": 0, "TransferDuration": 0, "TransferStatus": "PENDING", "VerifyDuration": 0, "VerifyStatus": "PENDING", "ErrorCode": "SyncTaskErrorLocationNotAdded", "ErrorDetail": "Task failed to access location loc-097e6e9d137283ce5: x40016: mount error(2): No such file or directory\nRefer to the mount.cifs(8) manual page (e.g. man mount.cifs)" }, "BytesCompressed": 0 }
No such file or directory Refer to the mount.cifs(8) manual page
とエラーになってしまいました。
CloudWatch Logsを確認しても以下のログしか記録されていませんでした。
[INFO] Request to start task-03dd23c56898e3363.
指定したパスは/
なので、パスが存在しないということはないですよね。
ルートボリューム以外のボリュームを指定してDataSyncを実行
DataSyncのロケーションの作成
DataSyncのFSx for ONTAPのロケーションで作成するCreateLocationFsxOntap APIを確認してみます。
Subdirectory
Specifies the junction path (also known as a mount point) in the SVM volume where you're copying data to or from (for example, /vol1).
Note
Don't specify a junction path in the SVM's root volume. For more information, see Managing FSx for ONTAP storage virtual machines in the Amazon FSx for NetApp ONTAP User Guide.
SVM内のボリュームのジャンクションパスをしろと書いてありますが、注意書きで「SVMのルートボリュームのジャンクションパスを指定してはならない」とも記載がありますね。
ということで、各SVMのロケーションに設定するパスを/
から/vol1
に変更します。ロケーションの設定を後から変更することはできないため、作り直しになります。
# SVM1の /vol1 のロケーションの作成 # SVM1の /vol1 のロケーションのパラメーター $ sub_directory=/vol1 $ svm_arn=arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-0130caf90485a0034 $ name=svm1 $ create_location_fsx_ontap_input=$(cat <<EOM { "Protocol": { "SMB": { "Domain": "$domain", "MountOptions": { "Version": "AUTOMATIC" }, "Password": "$password", "User": "$user" } }, "SecurityGroupArns": [ "$sg_arn" ], "StorageVirtualMachineArn": "$svm_arn", "Subdirectory": "$sub_directory", "Tags": [ { "Key": "Name", "Value": "$name" } ] } EOM ) # ロケーションの作成 $ create_location_fsx_ontap_output=$(aws datasync create-location-fsx-ontap \ --cli-input-json "$create_location_fsx_ontap_input" ) # 作成されたロケーションの確認 $ aws datasync describe-location-fsx-ontap \ --location-arn $(echo $create_location_fsx_ontap_output \ | jq -r ".LocationArn") { "CreationTime": "2022-11-12T03:54:30.426000+00:00", "LocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-04591d2426975ed46", "LocationUri": "fsxn-smb://SVM1.CORP.NON-97.NET/vol1/", "Protocol": { "SMB": { "Domain": "corp.non-97.net", "MountOptions": { "Version": "AUTOMATIC" }, "User": "FSxAdmin" } }, "SecurityGroupArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365" ], "StorageVirtualMachineArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-0130caf90485a0034", "FsxFilesystemArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-083d045e152f6c0a7" } # SVM2の /vol1 のロケーションの作成 # SVM2の /vol1 のロケーションのパラメーター $ svm_arn=arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-074f542c2e27ebc8f $ name=svm2 $ create_location_fsx_ontap_input=$(cat <<EOM { "Protocol": { "SMB": { "Domain": "$domain", "MountOptions": { "Version": "AUTOMATIC" }, "Password": "$password", "User": "$user" } }, "SecurityGroupArns": [ "$sg_arn" ], "StorageVirtualMachineArn": "$svm_arn", "Subdirectory": "$sub_directory", "Tags": [ { "Key": "Name", "Value": "$name" } ] } EOM ) # ロケーションの作成 $ create_location_fsx_ontap_output=$(aws datasync create-location-fsx-ontap \ --cli-input-json "$create_location_fsx_ontap_input" ) # 作成されたロケーションの確認 $ aws datasync describe-location-fsx-ontap \ --location-arn $(echo $create_location_fsx_ontap_output \ | jq -r ".LocationArn") { "CreationTime": "2022-11-12T03:55:58.250000+00:00", "LocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-02a286de7b0b46276", "LocationUri": "fsxn-smb://SVM2.CORP.NON-97.NET/vol1/", "Protocol": { "SMB": { "Domain": "corp.non-97.net", "MountOptions": { "Version": "AUTOMATIC" }, "User": "FSxAdmin" } }, "SecurityGroupArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365" ], "StorageVirtualMachineArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-074f542c2e27ebc8f", "FsxFilesystemArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-083d045e152f6c0a7" }
DataSyncのタスク作成と実行
各SVMのパスが/vol1
のロケーションを用意できたので、DataSyncタスク作成します。
# DataSyncタスクのパラメーター $ src_location_arn=arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-04591d2426975ed46. # SVM1の /vol1 のロケーション $ dest_location_arn=arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-02a286de7b0b46276. # SVM2の /vol1 のロケーション $ clouwatch_logs_arn='arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/datasync:*' $ name='svm1_vol1-to-svm2_vol1' $ create_task_input=$(cat <<EOM { "SourceLocationArn": "$src_location_arn", "DestinationLocationArn": "$dest_location_arn", "CloudWatchLogGroupArn": "$clouwatch_logs_arn", "Name": "$name", "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" } } EOM ) # DataSyncタスクの作成 $ create_task_output=$(aws datasync create-task \ --cli-input-json "$create_task_input" ) # 作成されたDataSyncタスクの確認 $ aws datasync describe-task \ --task-arn $(echo $create_task_output \ | jq -r ".TaskArn") { "TaskArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-0328b78115cd858d6", "Status": "AVAILABLE", "Name": "svm1_vol1-to-svm2_vol1", "SourceLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-04591d2426975ed46", "DestinationLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-02a286de7b0b46276", "CloudWatchLogGroupArn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/datasync:*", "SourceNetworkInterfaceArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-00d59fa4dc467d0e9", "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-09aff367d7ed122ad" ], "DestinationNetworkInterfaceArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-03127ef2aca7f6752", "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-0e0e700fec52d6f7f" ], "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" }, "Excludes": [], "CreationTime": "2022-11-12T03:58:34.790000+00:00", "Includes": [] }
DataSyncタスクが作成されました。
こちらのタスクを実行します。
# DataSyncタスクの実行 $ start_task_execution_output=$(aws datasync start-task-execution \ --task-arn $(echo $create_task_output \ | jq -r ".TaskArn") ) # タスクの実行結果の確認 $ aws datasync describe-task-execution \ --task-execution-arn $(echo $start_task_execution_output \ | jq -r ".TaskExecutionArn") { "TaskExecutionArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-0328b78115cd858d6/execution/exec-0f84254cd877312fe", "Status": "ERROR", "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" }, "Excludes": [], "Includes": [], "StartTime": "2022-11-12T03:59:33.445000+00:00", "EstimatedFilesToTransfer": 0, "EstimatedBytesToTransfer": 0, "FilesTransferred": 0, "BytesWritten": 0, "BytesTransferred": 0, "Result": { "PrepareDuration": 0, "PrepareStatus": "PENDING", "TotalDuration": 0, "TransferDuration": 0, "TransferStatus": "PENDING", "VerifyDuration": 0, "VerifyStatus": "PENDING", "ErrorCode": "SyncTaskErrorLocationNotAdded", "ErrorDetail": "Task failed to access location loc-04591d2426975ed46: x40016: mount error(2): No such file or directory\nRefer to the mount.cifs(8) manual page (e.g. man mount.cifs)" }, "BytesCompressed": 0 }
状態変わらず、No such file or directory Refer to the mount.cifs(8) manual page
とエラーになってしまいました。
転送元に何もファイルを置いていないのがよくないのでしょうか。適当なファイルを転送元のボリュームに置いて再実行してみます。
まず、適当なテキストファイルをSVM1
の/vol1
のCIFSファイル共有であるshare1
に配置します。
# SVM1の /vol1 のCIFSファイル共有をZドライブにマウント > net use Z: \\SVM1.CORP.NON-97.NET\share1 The command completed successfully. # 適当なテキストファイルを作成 > echo "test" > Z:\test.txt # 作成したファイルを確認 > ls Z: Directory: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----l 11/11/2022 4:50 PM vol3 -a---- 11/11/2022 6:08 PM 14 test.txt
この状態でDataSyncタスクを再実行します。
# DataSyncタスクの実行 $ start_task_execution_output=$(aws datasync start-task-execution \ --task-arn $(echo $create_task_output \ | jq -r ".TaskArn") ) # タスクの実行結果の確認 $ aws datasync describe-task-execution \ --task-execution-arn $(echo $start_task_execution_output \ | jq -r ".TaskExecutionArn") { "TaskExecutionArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-0328b78115cd858d6/execution/exec-0f2edc811751687af", "Status": "ERROR", "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" }, "Excludes": [], "Includes": [], "StartTime": "2022-11-12T04:09:13.875000+00:00", "EstimatedFilesToTransfer": 0, "EstimatedBytesToTransfer": 0, "FilesTransferred": 0, "BytesWritten": 0, "BytesTransferred": 0, "Result": { "PrepareDuration": 0, "PrepareStatus": "PENDING", "TotalDuration": 0, "TransferDuration": 0, "TransferStatus": "PENDING", "VerifyDuration": 0, "VerifyStatus": "PENDING", "ErrorCode": "SyncTaskErrorLocationNotAdded", "ErrorDetail": "Task failed to access location loc-02a286de7b0b46276: x40016: mount error(2): No such file or directory\nRefer to the mount.cifs(8) manual page (e.g. man mount.cifs)" }, "BytesCompressed": 0 }
変わらずエラーになります。エラー内容も全く同じです。
転送元をFSx for Windows File ServerにしてDataSyncを実行
作成したFSx for Windows File Serverの確認
「もしや、FSx for ONTAPのロケーションを転送元に設定することはできないのでは?」とも思うようになってきました。
問題切り分けのために、転送元をFSx for Windows File ServerにしてDataSyncを実行します。
転送元がFSx for Windows File Serverで、転送先がFSx for ONTAPのパターンは以下記事で実行したことがあるので何か見えてくるかも知れません。
作成したFSx for Windows File Serverは以下の通りです。
$ aws fsx describe-file-systems { "FileSystems": [ { "OwnerId": "<AWSアカウントID>", "CreationTime": "2022-11-12T02:23:39.467000+00:00", "FileSystemId": "fs-083d045e152f6c0a7", "FileSystemType": "ONTAP", "Lifecycle": "AVAILABLE", "StorageCapacity": 1024, "StorageType": "SSD", "VpcId": "vpc-08b84da1f793ed513", "SubnetIds": [ "subnet-08dc789896a48a3b4" ], "NetworkInterfaceIds": [ "eni-032eb46f2ae94002f", "eni-06c258dd5aaaca549" ], "KmsKeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/365ae19c-8016-4963-9afd-05f703509254", "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-083d045e152f6c0a7", "Tags": [ { "Key": "aws:cloudformation:stack-name", "Value": "FsxnStack" }, { "Key": "aws:cloudformation:logical-id", "Value": "FSxforONTAPfilesystem" }, { "Key": "aws:cloudformation:stack-id", "Value": "arn:aws:cloudformation:us-east-1:<AWSアカウントID>:stack/FsxnStack/78cdb890-5423-11ed-81fb-0eac30df53d1" }, { "Key": "Name", "Value": "fsx-for-ontap-file-system" } ], "OntapConfiguration": { "AutomaticBackupRetentionDays": 7, "DailyAutomaticBackupStartTime": "16:00", "DeploymentType": "SINGLE_AZ_1", "Endpoints": { "Intercluster": { "DNSName": "intercluster.fs-083d045e152f6c0a7.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.75", "10.0.1.80" ] }, "Management": { "DNSName": "management.fs-083d045e152f6c0a7.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.110" ] } }, "DiskIopsConfiguration": { "Mode": "AUTOMATIC", "Iops": 3072 }, "PreferredSubnetId": "subnet-08dc789896a48a3b4", "ThroughputCapacity": 128, "WeeklyMaintenanceStartTime": "6:17:00" } }, { "OwnerId": "<AWSアカウントID>", "CreationTime": "2022-11-12T04:38:25.535000+00:00", "FileSystemId": "fs-0a40be3d53088c7d4", "FileSystemType": "WINDOWS", "Lifecycle": "AVAILABLE", "StorageCapacity": 32, "StorageType": "SSD", "VpcId": "vpc-08b84da1f793ed513", "SubnetIds": [ "subnet-08dc789896a48a3b4" ], "NetworkInterfaceIds": [ "eni-0ea676b904dd79c6d" ], "DNSName": "amznfsxmdflnwm0.corp.non-97.net", "KmsKeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/365ae19c-8016-4963-9afd-05f703509254", "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-0a40be3d53088c7d4", "Tags": [ { "Key": "Name", "Value": "fsxw" } ], "WindowsConfiguration": { "SelfManagedActiveDirectoryConfiguration": { "DomainName": "corp.non-97.net", "OrganizationalUnitDistinguishedName": "OU=FSxForONTAP,DC=corp,DC=non-97,DC=net", "FileSystemAdministratorsGroup": "FSxAdminGroup", "UserName": "FSxServiceAccount", "DnsIps": [ "10.0.1.10" ] }, "DeploymentType": "SINGLE_AZ_2", "RemoteAdministrationEndpoint": "amznfsxof04af3l.corp.non-97.net", "PreferredSubnetId": "subnet-08dc789896a48a3b4", "PreferredFileServerIp": "10.0.1.78", "ThroughputCapacity": 32, "WeeklyMaintenanceStartTime": "6:08:00", "DailyAutomaticBackupStartTime": "06:00", "AutomaticBackupRetentionDays": 0, "CopyTagsToBackups": false, "AuditLogConfiguration": { "FileAccessAuditLogLevel": "DISABLED", "FileShareAccessAuditLogLevel": "DISABLED" } } } ] }
AD周りの設定はFSx for ONTAPのSVMと全く同じにしています。
作成したFSx for Windows File ServerをYドライブにマウントして、適当なテキストファイルを作成します。
# 作成したFSx for Windows File ServerをYドライブにマウント > net use Y: \\amznfsxmdflnwm0.corp.non-97.net\share The command completed successfully. # 適当なテキストファイルを作成 > echo "test" > Y:\fsxw-test.txt # 作成したファイルを確認 > ls Y: Directory: Y:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 11/11/2022 7:13 PM 14 fsxw-test.txt
DataSyncのロケーションの作成
FSx for Windows File Serverのロケーションを作成します。その際、FSx for Windows File Serverのデフォルトの共有名はshare
なので、こちらをパス(Subdirectory
)に指定します。
# FSx for Windows File Serverのロケーションのパラメーター $ sub_directory=share $ domain=corp.non-97.net $ password='<サービスアカウントのパスワード>' $ user=FSxAdmin $ sg_arn=arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365 $ file_system_arn=arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-0a40be3d53088c7d4 $ create_location_fsx_windows_input=$(cat <<EOM { "Subdirectory": "$sub_directory", "FsxFilesystemArn": "$file_system_arn", "SecurityGroupArns": [ "$sg_arn" ], "User": "$user", "Domain": "$domain", "Password": "$password" } EOM ) # ロケーションの作成 $ create_location_fsx_windows_output=$(aws datasync create-location-fsx-windows \ --cli-input-json "$create_location_fsx_windows_input" ) # 作成されたロケーションの確認 $ aws datasync describe-location-fsx-windows \ --location-arn $(echo $create_location_fsx_windows_output \ | jq -r ".LocationArn") { "LocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0092a6da27ec5e362", "LocationUri": "fsxw://us-east-1.fs-0a40be3d53088c7d4/share/", "SecurityGroupArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365" ], "CreationTime": "2022-11-12T05:19:02.350000+00:00", "User": "FSxAdmin", "Domain": "corp.non-97.net" }
DataSyncのタスク作成と実行
FSx for Windows File Serverのロケーションを用意できたので、DataSyncタスク作成します。
転送先はSVM1
の/vol1
です。
# DataSyncタスクのパラメーター $ src_location_arn=arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0092a6da27ec5e362. # FSx for Windows File Serverのロケーション $ dest_location_arn=arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-04591d2426975ed46 # SVM1の /vol1 のロケーション $ clouwatch_logs_arn='arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/datasync:*' $ name='fsxw-to-svm1_vol1' $ create_task_input=$(cat <<EOM { "SourceLocationArn": "$src_location_arn", "DestinationLocationArn": "$dest_location_arn", "CloudWatchLogGroupArn": "$clouwatch_logs_arn", "Name": "$name", "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" } } EOM ) # DataSyncタスクの作成 $ create_task_output=$(aws datasync create-task \ --cli-input-json "$create_task_input" ) # 作成されたDataSyncタスクの確認 $ aws datasync describe-task \ --task-arn $(echo $create_task_output \ | jq -r ".TaskArn") { "TaskArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-077a07048459b1dad", "Status": "AVAILABLE", "Name": "fsxw-to-svm1_vol1", "SourceLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0092a6da27ec5e362", "DestinationLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-04591d2426975ed46", "CloudWatchLogGroupArn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/datasync:*", "SourceNetworkInterfaceArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-0071f1a83852b49f1", "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-0b937859f5c5202ed" ], "DestinationNetworkInterfaceArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-0ab02081b77031126", "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-0b37a8691d9078147" ], "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" }, "Excludes": [], "CreationTime": "2022-11-12T05:34:55.800000+00:00", "Includes": [] }
DataSyncタスクが作成されました。
こちらのタスクを実行します。
# DataSyncタスクの実行 $ start_task_execution_output=$(aws datasync start-task-execution \ --task-arn $(echo $create_task_output \ | jq -r ".TaskArn") ) # タスクの実行結果の確認 $ aws datasync describe-task-execution \ --task-execution-arn $(echo $start_task_execution_output \ | jq -r ".TaskExecutionArn") { "TaskExecutionArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-077a07048459b1dad/execution/exec-045a92ee0f3b48e14", "Status": "ERROR", "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" }, "Excludes": [], "Includes": [], "StartTime": "2022-11-12T05:36:18.568000+00:00", "EstimatedFilesToTransfer": 0, "EstimatedBytesToTransfer": 0, "FilesTransferred": 0, "BytesWritten": 0, "BytesTransferred": 0, "Result": { "PrepareDuration": 0, "PrepareStatus": "PENDING", "TotalDuration": 0, "TransferDuration": 0, "TransferStatus": "PENDING", "VerifyDuration": 0, "VerifyStatus": "PENDING", "ErrorCode": "SyncTaskErrorLocationNotAdded", "ErrorDetail": "Task failed to access location loc-04591d2426975ed46: x40016: mount error(2): No such file or directory\nRefer to the mount.cifs(8) manual page (e.g. man mount.cifs)" }, "BytesCompressed": 0 }
こちらもエラーになりました。
しかし、エラー文を見るとNo such file or directory Refer to the mount.cifs(8) manual page
という箇所は同じですが、対象のロケーションが転送先のSVM1
の/vol1
のロケーションになっています。
以前の記事の検証では転送先にプロトコルがSMBのSVMをロケーションとして設定して転送できたことから、「FSx for ONTAPのロケーションを転送元に設定することはできない」ということではなさそうです。
FSx for ONTAPのロケーションにCIFSファイル共有名を指定してDataSyncを実行
DataSyncのロケーションの作成
以前の記事の検証で使った転送先にプロトコルがSMBのSVMのロケーションを確認してみます。
すると、ボリューム(/smb
)とCIFSファイル共有(smb
)の名前が非常に似ています。
FsxId074d827fa378d0d58::> vserver cifs share show Vserver Share Path Properties Comment ACL -------------- ------------- ----------------- ---------- -------- ----------- fsx-for-ontap-svm oplocks BUILTIN\Administrators / Full Control c$ / browsable - changenotify show-previous-versions fsx-for-ontap-svm browsable ipc$ / - - fsx-for-ontap-svm browsable Everyone / Full Control smb /smb - 3 entries were displayed.
DataSyncのロケーションはパスの先頭に自動で/
が付与されます。もしかしたらSVMのジャンクションパスではなく、CIFSファイル共有名を指定する必要があるのかも知れません。
確認のためにSVM1
のCIFSファイル共有share1
のロケーションを作成します。
# SVM1のCIFSファイル共有 share1 のロケーションのパラメーター $ domain=corp.non-97.net $ password='<サービスアカウントのパスワード>' $ user=FSxAdmin $ sg_arn=arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365 $ svm_arn=arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-0130caf90485a0034 $ name=svm1 $ sub_directory=/share1 create_location_fsx_ontap_input=$(cat <<EOM { "Protocol": { "SMB": { "Domain": "$domain", "MountOptions": { "Version": "AUTOMATIC" }, "Password": "$password", "User": "$user" } }, "SecurityGroupArns": [ "$sg_arn" ], "StorageVirtualMachineArn": "$svm_arn", "Subdirectory": "$sub_directory", "Tags": [ { "Key": "Name", "Value": "$name" } ] } EOM ) # ロケーションの作成 $ create_location_fsx_ontap_output=$(aws datasync create-location-fsx-ontap \ --cli-input-json "$create_location_fsx_ontap_input" ) # 作成されたロケーションの確認 $ aws datasync describe-location-fsx-ontap \ --location-arn $(echo $create_location_fsx_ontap_output \ | jq -r ".LocationArn") { "CreationTime": "2022-11-12T05:45:51.105000+00:00", "LocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-02a8cd685110953a3", "LocationUri": "fsxn-smb://SVM1.CORP.NON-97.NET/share1/", "Protocol": { "SMB": { "Domain": "corp.non-97.net", "MountOptions": { "Version": "AUTOMATIC" }, "User": "FSxAdmin" } }, "SecurityGroupArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365" ], "StorageVirtualMachineArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-0130caf90485a0034", "FsxFilesystemArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-083d045e152f6c0a7" }
DataSyncのタスク作成と実行
SVM1
のCIFSファイル共有share1
のロケーションを作成できたので、転送元がFSx for Windows File Serverで、転送先はSVM1
のCIFSファイル共有share1
のタスクを作成します。
# DataSyncタスクのパラメーター $ src_location_arn=arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0092a6da27ec5e362 # FSx for Windows File Serverのロケーション $ dest_location_arn=arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-02a8cd685110953a3 # SVM1のCIFSファイル共有 share1 のロケーション $ clouwatch_logs_arn='arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/datasync:*' $ name='fsxw-to-svm1_share1' $ create_task_input=$(cat <<EOM { "SourceLocationArn": "$src_location_arn", "DestinationLocationArn": "$dest_location_arn", "CloudWatchLogGroupArn": "$clouwatch_logs_arn", "Name": "$name", "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" } } EOM ) # DataSyncタスクの作成 $ create_task_output=$(aws datasync create-task \ --cli-input-json "$create_task_input" ) # 作成されたDataSyncタスクの確認 $ aws datasync describe-task \ --task-arn $(echo $create_task_output \ | jq -r ".TaskArn") { "TaskArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-041768e13836d01ef", "Status": "AVAILABLE", "Name": "fsxw-to-svm1_share1", "SourceLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0092a6da27ec5e362", "DestinationLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-02a8cd685110953a3", "CloudWatchLogGroupArn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/datasync:*", "SourceNetworkInterfaceArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-00b0b8506ccd4c6ef", "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-080d2a935c5a509f0" ], "DestinationNetworkInterfaceArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-04ae360aabe2172f3", "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-0d520c4734e253c8c" ], "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" }, "Excludes": [], "CreationTime": "2022-11-12T05:47:48.288000+00:00", "Includes": [] }
DataSyncタスクが作成されました。
こちらのタスクを実行します。
# DataSyncタスクの実行 $ start_task_execution_output=$(aws datasync start-task-execution \ --task-arn $(echo $create_task_output \ | jq -r ".TaskArn") ) # タスクの実行結果の確認 $ aws datasync describe-task-execution \ --task-execution-arn $(echo $start_task_execution_output \ | jq -r ".TaskExecutionArn") { "TaskExecutionArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-041768e13836d01ef/execution/exec-0ca9e1d0ac54e1c32", "Status": "SUCCESS", "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" }, "Excludes": [], "Includes": [], "StartTime": "2022-11-12T05:49:31.972000+00:00", "EstimatedFilesToTransfer": 2, "EstimatedBytesToTransfer": 14, "FilesTransferred": 3, "BytesWritten": 14, "BytesTransferred": 14, "Result": { "PrepareDuration": 1213, "PrepareStatus": "SUCCESS", "TotalDuration": 5854, "TransferDuration": 4174, "TransferStatus": "SUCCESS", "VerifyDuration": 291, "VerifyStatus": "SUCCESS" }, "BytesCompressed": 14 }
DataSyncタスクの実行が成功しました。
やはり、ロケーションのパスにSVMのジャンクションパスではなく、CIFSファイル共有名を指定する必要があるようです。
CloudWatch Logsに出力されたログを確認すると、確かに作成したファイルとメタデータが転送されていそうです。
[INFO] Request to start task-041768e13836d01ef. [INFO] Execution exec-0ca9e1d0ac54e1c32 started. [INFO] Started logging in destination hostId: host-0bb09e20804515c38 for Execution exec-0ca9e1d0ac54e1c32 [INFO] Started logging in destination hostId: host-0f781b63d3e82e4e6 for Execution exec-0ca9e1d0ac54e1c32 [NOTICE] Transferred file /fsxw-test.txt, 14 bytes [NOTICE] Transferred directory metadata / [NOTICE] Verified file /fsxw-test.txt, 14 bytes [NOTICE] Verified directory / [INFO] Execution exec-0ca9e1d0ac54e1c32 finished with status Success.
ONTAP CLIからCIFSファイル共有が追加されているか確認します。
FSx for Windows File Serverのshare
からSVM1
のshare1
への転送なので、share1
の配下にshare
というCIFSファイル共有が作成されるのは考えにくいですが、念の為確認です。
FsxId083d045e152f6c0a7::> cifs share show Vserver Share Path Properties Comment ACL -------------- ------------- ----------------- ---------- -------- ----------- svm1 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm1 ipc$ / browsable - - svm1 share1 /vol1 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 share2 /vol2 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 share3 /vol1/vol3 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 share4 /vol2/folder oplocks CORP\FSxAdminGroup / Full Control browsable Everyone / Read changenotify show-previous-versions svm2 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm2 ipc$ / browsable - - 8 entries were displayed.
CIFSファイル共有は追加されていないですね。
SVM1
のshare1
配下にfsxw-test.txt
というファイルが追加されていることを確認します。
> ls Z:\ Directory: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 11/11/2022 7:52 PM .aws-datasync d----l 11/11/2022 4:50 PM vol3 -a---- 11/11/2022 7:39 PM 14 fsxw-test.txt -a---- 11/11/2022 6:08 PM 14 test.txt
fsxw-test.txt
が確かに追加されていますね。
各SVMのCIFSファイル共有 c$ を指定してDataSyncを実行
DataSyncロケーションの作成
ロケーションのパスにSVMのジャンクションパスではなく、CIFSファイル共有名を指定する必要があることが分かりました。
次に、SVMの/
のCIFSファイル共有であるc$
間をDataSyncで転送します。なんだか/
から転送しても/
配下のパスを見ているCIFSファイル共有の設定は転送されない気がしてきました。
まず、SVM1
のCIFSファイル共有c$
のロケーションを作成します。
# SVM1のCIFSファイル共有 c$ のロケーションのパラメーター $ domain=corp.non-97.net $ password='<サービスアカウントのパスワード>' $ user=FSxAdmin $ sg_arn=arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365 $ svm_arn=arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-0130caf90485a0034 $ name=svm1 $ sub_directory=/c$ $ create_location_fsx_ontap_input=$(cat <<EOM { "Protocol": { "SMB": { "Domain": "$domain", "MountOptions": { "Version": "AUTOMATIC" }, "Password": "$password", "User": "$user" } }, "SecurityGroupArns": [ "$sg_arn" ], "StorageVirtualMachineArn": "$svm_arn", "Subdirectory": "$sub_directory", "Tags": [ { "Key": "Name", "Value": "$name" } ] } EOM ) # ロケーションの作成 $ create_location_fsx_windows_output=$(aws datasync create-location-fsx-windows \ --cli-input-json "$create_location_fsx_windows_input" ) # 作成されたロケーションの確認 $ aws datasync describe-location-fsx-windows \ --location-arn $(echo $create_location_fsx_windows_output \ | jq -r ".LocationArn") { "CreationTime": "2022-11-12T06:02:02.166000+00:00", "LocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0927697fdcec306a1", "LocationUri": "fsxn-smb://SVM1.CORP.NON-97.NET/c$/", "Protocol": { "SMB": { "Domain": "corp.non-97.net", "MountOptions": { "Version": "AUTOMATIC" }, "User": "FSxAdmin" } }, "SecurityGroupArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365" ], "StorageVirtualMachineArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-0130caf90485a0034", "FsxFilesystemArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-083d045e152f6c0a7" }
同様にSVM2
のCIFSファイル共有c$
のロケーションを作成します。
# SVM2のCIFSファイル共有 c$ のロケーションのパラメーター $ svm_arn=arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-074f542c2e27ebc8f $ name=svm2 $ create_location_fsx_ontap_input=$(cat <<EOM { "Protocol": { "SMB": { "Domain": "$domain", "MountOptions": { "Version": "AUTOMATIC" }, "Password": "$password", "User": "$user" } }, "SecurityGroupArns": [ "$sg_arn" ], "StorageVirtualMachineArn": "$svm_arn", "Subdirectory": "$sub_directory", "Tags": [ { "Key": "Name", "Value": "$name" } ] } EOM ) # ロケーションの作成 $ create_location_fsx_windows_output=$(aws datasync create-location-fsx-windows \ --cli-input-json "$create_location_fsx_windows_input" ) # 作成されたロケーションの確認 $ aws datasync describe-location-fsx-windows \ --location-arn $(echo $create_location_fsx_windows_output \ | jq -r ".LocationArn") { "CreationTime": "2022-11-12T06:03:58.669000+00:00", "LocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0bd5947290b47a70c", "LocationUri": "fsxn-smb://SVM2.CORP.NON-97.NET/c$/", "Protocol": { "SMB": { "Domain": "corp.non-97.net", "MountOptions": { "Version": "AUTOMATIC" }, "User": "FSxAdmin" } }, "SecurityGroupArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:security-group/sg-0cd906b274d7fa365" ], "StorageVirtualMachineArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-083d045e152f6c0a7/svm-074f542c2e27ebc8f", "FsxFilesystemArn": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-083d045e152f6c0a7" }
DataSyncのタスク作成と実行
各SVMのCIFSファイル共有c$
のロケーションを用意できたので、DataSyncタスク作成します。
転送元はSVM1
のCIFSファイル共有c$
で、転送先はSVM2
のCIFSファイル共有c$
です。
# DataSyncタスクのパラメーター $ src_location_arn=arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0927697fdcec306a1 # SVM1のCIFSファイル共有 c$ のロケーション $ dest_location_arn=arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0bd5947290b47a70c # SVM2のCIFSファイル共有 c$ のロケーション $ clouwatch_logs_arn='arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/datasync:*' $ name='svm1_c-to-svm2_c' $ create_task_input=$(cat <<EOM { "SourceLocationArn": "$src_location_arn", "DestinationLocationArn": "$dest_location_arn", "CloudWatchLogGroupArn": "$clouwatch_logs_arn", "Name": "$name", "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" } } EOM ) # DataSyncタスクの作成 $ create_task_output=$(aws datasync create-task \ --cli-input-json "$create_task_input" ) # 作成されたDataSyncタスクの確認 $ aws datasync describe-task \ --task-arn $(echo $create_task_output \ | jq -r ".TaskArn") { "TaskArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-0744481af7db83491", "Status": "AVAILABLE", "Name": "svm1_c-to-svm2_c", "SourceLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0927697fdcec306a1", "DestinationLocationArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:location/loc-0bd5947290b47a70c", "CloudWatchLogGroupArn": "arn:aws:logs:us-east-1:<AWSアカウントID>:log-group:/aws/datasync:*", "SourceNetworkInterfaceArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-0386d39acdbc960ce", "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-0fe145c052ed7e933" ], "DestinationNetworkInterfaceArns": [ "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-02f8c4b9a98717fbf", "arn:aws:ec2:us-east-1:<AWSアカウントID>:network-interface/eni-09d6dee81614e493e" ], "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" }, "Excludes": [], "CreationTime": "2022-11-12T06:05:34.303000+00:00", "Includes": [] }
DataSyncタスクが作成されました。
こちらのタスクを実行します。
# DataSyncタスクの実行 $ start_task_execution_output=$(aws datasync start-task-execution \ --task-arn $(echo $create_task_output \ | jq -r ".TaskArn") ) # タスクの実行結果の確認 $ aws datasync describe-task-execution \ --task-execution-arn $(echo $start_task_execution_output \ | jq -r ".TaskExecutionArn") { "TaskExecutionArn": "arn:aws:datasync:us-east-1:<AWSアカウントID>:task/task-0744481af7db83491/execution/exec-0b8b9c0b6b30eebda", "Status": "SUCCESS", "Options": { "VerifyMode": "ONLY_FILES_TRANSFERRED", "OverwriteMode": "ALWAYS", "Atime": "BEST_EFFORT", "Mtime": "PRESERVE", "Uid": "NONE", "Gid": "NONE", "PreserveDeletedFiles": "PRESERVE", "PreserveDevices": "NONE", "PosixPermissions": "NONE", "BytesPerSecond": -1, "TaskQueueing": "ENABLED", "LogLevel": "TRANSFER", "TransferMode": "CHANGED", "SecurityDescriptorCopyFlags": "OWNER_DACL", "ObjectTags": "PRESERVE" }, "Excludes": [], "Includes": [], "StartTime": "2022-11-12T06:06:52.493000+00:00", "EstimatedFilesToTransfer": 8, "EstimatedBytesToTransfer": 28, "FilesTransferred": 9, "BytesWritten": 28, "BytesTransferred": 28, "Result": { "PrepareDuration": 1250, "PrepareStatus": "SUCCESS", "TotalDuration": 12827, "TransferDuration": 11231, "TransferStatus": "SUCCESS", "VerifyDuration": 361, "VerifyStatus": "SUCCESS" }, "BytesCompressed": 28 }
DataSyncタスクの実行が成功しました。
CloudWatch Logsに出力されたログを確認すると、作成したファイルとボリュームがディレクトリとして転送されていそうです。
[INFO] Request to start task-0744481af7db83491. [INFO] Started logging in destination hostId: host-0bd570acab753bda3 for Execution exec-0b8b9c0b6b30eebda [INFO] Started logging in destination hostId: host-0ea7b46eb1d679124 for Execution exec-0b8b9c0b6b30eebda [INFO] Execution exec-0b8b9c0b6b30eebda started. [NOTICE] Created directory /vol1/vol3 [NOTICE] Created directory /vol1/.aws-datasync [NOTICE] Created directory /vol2/folder [NOTICE] Transferred file /vol1/fsxw-test.txt, 14 bytes [NOTICE] Transferred file /vol1/test.txt, 14 bytes [NOTICE] Transferred directory metadata /vol2 [NOTICE] Transferred directory metadata /vol1 [NOTICE] Transferred directory metadata / [NOTICE] Transferred directory metadata /vol2/folder [NOTICE] Transferred directory metadata /vol1/.aws-datasync [NOTICE] Transferred directory metadata /vol1/vol3 [NOTICE] Verified directory / [NOTICE] Verified file /vol1/fsxw-test.txt, 14 bytes [NOTICE] Verified file /vol1/test.txt, 14 bytes [INFO] Execution exec-0b8b9c0b6b30eebda finished with status Success.
ONTAP CLIからCIFSファイル共有が追加されているか確認します。
FsxId083d045e152f6c0a7::> cifs share show Vserver Share Path Properties Comment ACL -------------- ------------- ----------------- ---------- -------- ----------- svm1 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm1 ipc$ / browsable - - svm1 share1 /vol1 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 share2 /vol2 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 share3 /vol1/vol3 oplocks - Everyone / Full Control browsable changenotify show-previous-versions svm1 share4 /vol2/folder oplocks CORP\FSxAdminGroup / Full Control browsable Everyone / Read changenotify show-previous-versions svm2 c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions svm2 ipc$ / browsable - - 8 entries were displayed.
やはり、CIFSファイル共有は追加されていないですね。
最後にSVM2
のCIFSファイル共有c$
をマウントして、転送されたファイルやフォルダを確認します。
# XドライブにSVM2のCIFSファイル共有 c$ をマウント > net use X: \\SVM2.CORP.NON-97.NET\c$ The command completed successfully. # 現在のドライブ一覧を確認 > Get-PSDrive Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- Alias Alias C 15.23 14.76 FileSystem C:\ Users\Administrator Cert Certificate \ Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE Variable Variable WSMan WSMan X 0.00 0.95 FileSystem \\SVM2.CORP.NON-97.NET\c$ Y FileSystem \\amznfsxmdflnwm0.corp.non-97.ne... Z 0.00 0.95 FileSystem \\SVM1.CORP.NON-97.NET\share1 # Xドライブ配下を確認 > ls X:\ Directory: X:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 11/11/2022 8:10 PM .aws-datasync d----l 11/11/2022 5:01 PM vol1 d----l 11/11/2022 5:01 PM vol2 # SVM1の /vol1 に配置していたファイルやフォルダがあることを確認 > ls X:\vol1\ Directory: X:\vol1 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 11/11/2022 4:50 PM vol3 d----- 11/11/2022 7:52 PM .aws-datasync -a---- 11/11/2022 7:39 PM 14 fsxw-test.txt -a---- 11/11/2022 6:08 PM 14 test.txt # SVM1の /vol2 に配置していたフォルダがあることを確認 > ls X:\vol2\ Directory: X:\vol2 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 11/11/2022 5:26 PM folder
ファイルやフォルダは転送されていますね。
共有フォルダの設定を移行したい場合はDataSync実行後にプラスアルファの作業が必要
DataSyncで共有フォルダの設定を転送できるか検証してみました。
結論としては、DataSyncは共有フォルダの設定を転送しません。
そのため、共有フォルダの設定を移行したい場合はDataSync実行後にプラスアルファの作業が必要になります。
イメージとしては、DataSyncでファイルやフォルダ、メタデータを同期後に、Get-SmbShareやGet-SmbShareAccessで現行ファイルサーバーの共有設定を取得して、New-SmbShareやGrant-SmbShareAccessで移行先に同じ共有設定をしてあげるような形になるかと思います。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!